package com.bh.wms.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.bh.common.annotation.Excel;
import com.bh.common.core.domain.BhtmsBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.math.BigDecimal;
import java.util.List;

/**
 * 仓库基础信息
 *
 * @author GPT
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_warehouse")
@ApiModel(value = "仓库信息", description = "仓库基础信息")
public class WmsWarehouse extends BhtmsBaseEntity {

    @Serial
    private static final long serialVersionUID = 1L;

    @Excel(name = "仓库简称")
    @ApiModelProperty("仓库简称")
    private String shortName;

    @Excel(name = "仓库类型")
    @ApiModelProperty("仓库类型")
    private String warehouseType;

    @Excel(name = "所属组织")
    @ApiModelProperty("所属组织")
    private Long organizationId;

    @Excel(name = "联系人")
    @ApiModelProperty("联系人")
    private String contactName;

    @Excel(name = "联系电话")
    @ApiModelProperty("联系电话")
    private String contactPhone;

    @Excel(name = "联系邮箱")
    @ApiModelProperty("联系邮箱")
    private String contactEmail;

    @Excel(name = "国家")
    @ApiModelProperty("国家")
    private String country;

    @Excel(name = "省份")
    @ApiModelProperty("省份")
    private String province;

    @Excel(name = "城市")
    @ApiModelProperty("城市")
    private String city;

    @Excel(name = "区县")
    @ApiModelProperty("区县")
    private String district;

    @Excel(name = "详细地址")
    @ApiModelProperty("详细地址")
    private String address;

    @Excel(name = "经度")
    @ApiModelProperty("经度")
    private String longitude;

    @Excel(name = "纬度")
    @ApiModelProperty("纬度")
    private String latitude;

    @Excel(name = "面积(㎡)")
    @ApiModelProperty("仓库面积(㎡)")
    private BigDecimal areaSquare;

    @Excel(name = "最大体积(m³)")
    @ApiModelProperty("最大可存体积(m³)")
    private BigDecimal maxVolume;

    @Excel(name = "最大重量(kg)")
    @ApiModelProperty("最大可存重量(kg)")
    private BigDecimal maxWeight;

    @Excel(name = "先进先出")
    @ApiModelProperty("是否启用先进先出 0-否 1-是")
    private Integer enableFifo;

    @Excel(name = "批次管理")
    @ApiModelProperty("是否启用批次管理 0-否 1-是")
    private Integer enableBatchControl;

    @Excel(name = "效期管理")
    @ApiModelProperty("是否启用效期管理 0-否 1-是")
    private Integer enableExpiryControl;

    @Excel(name = "负库存")
    @ApiModelProperty("是否允许负库存 0-否 1-是")
    private Integer allowNegativeInventory;

    @Excel(name = "默认承运商")
    @ApiModelProperty("默认承运商ID预留字段")
    private Long defaultCarrierId;

    @Excel(name = "关联客户")
    @ApiModelProperty("关联客户ID预留字段")
    private Long ownerCustomerId;

    @ApiModelProperty("扩展字段1")
    private String extendOne;

    @ApiModelProperty("扩展字段2")
    private String extendTwo;

    @ApiModelProperty("扩展字段3")
    private String extendThree;

    @TableField(exist = false)
    @ApiModelProperty("库区列表")
    private List<WmsWarehouseZone> zones;
}

